Current File : /var/www/e360ban/wp-content/plugins/types/vendor/toolset/types/embedded/admin.php |
<?php
/**
*
*
*/
require_once( WPCF_EMBEDDED_TOOLSET_ABSPATH . '/toolset-common/visual-editor/editor-addon.class.php' );
require_once WPCF_EMBEDDED_ABSPATH . '/includes/post-relationship.php';
if ( defined( 'DOING_AJAX' ) ) {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/ajax.php';
add_action( 'wp_ajax_wpcf_ajax', 'wpcf_ajax_embedded' );
}
/**
* admin_init hook.
*/
function wpcf_embedded_admin_init_hook() {
// Add callbacks for post edit pages
add_action( 'load-post.php', 'wpcf_admin_edit_screen_load_hook' );
add_action( 'load-post-new.php', 'wpcf_admin_edit_screen_load_hook' );
// Meta boxes hook
add_action( 'add_meta_boxes', 'wpcf_admin_add_meta_boxes', 10, 2 );
// Add callback for 'media-upload.php'
add_filter( 'get_media_item_args', 'wpcf_get_media_item_args_filter' );
// Add save_post callback
add_action( 'save_post', 'wpcf_admin_save_post_hook', 10, 2 );
// Add Media callback
add_action( 'add_attachment', 'wpcf_admin_save_attachment_hook', 10 );
add_action( 'add_attachment', 'wpcf_admin_add_attachment_hook', 10 );
add_action( 'edit_attachment', 'wpcf_admin_save_attachment_hook', 10 );
// Render messages
wpcf_show_admin_messages();
// Render JS settings
add_action( 'admin_head', 'wpcf_admin_render_js_settings' );
// Media insert code
if ( ( isset( $_GET['context'] ) && $_GET['context'] == 'wpcf-fields-media-insert' )
|| ( isset( $_SERVER['HTTP_REFERER'] )
&& strpos( $_SERVER['HTTP_REFERER'],
'context=wpcf-fields-media-insert' ) !== false )
) {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields/file.php';
// Add types button
add_filter( 'attachment_fields_to_edit', 'wpcf_fields_file_attachment_fields_to_edit_filter', PHP_INT_MAX, 2 );
// Filter media TABs
add_filter( 'media_upload_tabs', 'wpcf_fields_file_media_upload_tabs_filter' );
}
register_post_type( TYPES_CUSTOM_FIELD_GROUP_CPT_NAME,
array(
'public' => false,
'label' => 'Types Groups',
'can_export' => false,
)
);
register_post_type( TYPES_USER_META_FIELD_GROUP_CPT_NAME,
array(
'public' => false,
'label' => 'Types User Groups',
'can_export' => false,
)
);
register_post_type(
TYPES_TERM_META_FIELD_GROUP_CPT_NAME,
array(
'public' => false,
'label' => 'Types Term Groups',
'can_export' => false,
)
);
add_filter( 'icl_custom_fields_to_be_copied',
'wpcf_custom_fields_to_be_copied', 10, 2 );
// WPML editor filters
add_filter( 'wpml_editor_custom_field_name', 'wpcf_wpml_editor_custom_field_name' );
add_filter( 'wpml_editor_custom_field_style', 'wpcf_wpml_editor_custom_field_style', 10, 2 );
// Initialize translations
if ( function_exists( 'icl_register_string' )
&& defined( 'WPML_ST_VERSION' )
&& ! get_option( 'wpcf_strings_translation_initialized', false ) ) {
wpcf_admin_bulk_string_translation();
update_option( 'wpcf_strings_translation_initialized', 1 );
}
}
/**
* Add meta boxes hook.
*
*/
function wpcf_admin_add_meta_boxes( $post_type, $post ) {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php';
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields-post.php';
if ( $post ) {
wpcf_add_meta_boxes( $post_type, $post );
}
}
/**
* save_post hook.
*
* @refactor see /youtrack/issue/types-1454#comment=102-254285
*/
function wpcf_admin_save_post_hook( $post_ID, $post ) {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php';
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields-post.php';
wpcf_admin_post_save_post_hook( $post_ID, $post );
}
/**
* Save attachment hook.
*
*/
function wpcf_admin_add_attachment_hook( $attachment_id ) {
$post = get_post( $attachment_id );
wpcf_admin_post_add_attachment_hook( $attachment_id, $post );
}
/**
* Save attachment hook.
*
*/
function wpcf_admin_save_attachment_hook( $attachment_id ) {
$post = get_post( $attachment_id );
wpcf_admin_save_post_hook( $attachment_id, $post );
}
/**
* Triggers post procceses.
*/
function wpcf_admin_edit_screen_load_hook() {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields-post.php';
global $wpcf;
$wpcf->post = wpcf_admin_get_edited_post();
wpcf_admin_post_init( $wpcf->post );
}
/**
* Add styles to admin fields groups
*/
function wpcf_admin_fields_postfields_styles() {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php';
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields-post.php';
// $groups = wpcf_admin_fields_get_groups();
$groups = wpcf_admin_post_get_post_groups_fields( wpcf_admin_get_edited_post() );
if ( ! empty( $groups ) ) {
echo '<style type="text/css">';
foreach ( $groups as $group ) {
echo str_replace( "}", "}\n",
wpcf_admin_get_groups_admin_styles_by_group( $group['id'] ) );
}
echo '</style>';
}
}
/**
* Add styles to userfields groups
*/
function wpcf_admin_fields_userfields_styles() {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/usermeta-post.php';
// $groups = wpcf_admin_fields_get_groups();
$groups = wpcf_admin_usermeta_get_groups_fields();
if ( ! empty( $groups ) ) {
echo '<style type="text/css">';
foreach ( $groups as $key => $group ) {
echo str_replace( "}", "}\n",
wpcf_admin_get_groups_admin_styles_by_group( $group['id'] ) );
}
echo '</style>';
}
}
/** @noinspection PhpUndefinedClassInspection */
/**
* Initiates/returns specific form.
*
* @staticvar array $wpcf_forms
*
* @param string $id
* @param array $form
*
* @return Enlimbo_Forms_Wpcf
* @deprecated Please avoid using Enlimbo forms for new code. Consider using Twig templates instead.
*/
function wpcf_form( $id, $form = array() ) {
static $wpcf_forms = array();
if ( isset( $wpcf_forms[ $id ] ) ) {
return $wpcf_forms[ $id ];
}
require_once WPCF_EMBEDDED_ABSPATH . '/classes/forms.php';
/** @noinspection PhpUndefinedClassInspection */
$new_form = new Enlimbo_Forms_Wpcf();
$new_form->autoHandle( $id, $form );
$wpcf_forms[ $id ] = $new_form;
return $wpcf_forms[ $id ];
}
/**
* Renders form elements.
*
* @staticvar string $form
*
* @param array $elements
*
* @return array
* @deprecated Please avoid using Enlimbo forms for new code. Consider using Twig templates instead.
*/
function wpcf_form_simple( $elements ) {
static $form = null;
require_once WPCF_EMBEDDED_ABSPATH . '/classes/forms.php';
if ( is_null( $form ) ) {
$form = new Enlimbo_Forms_Wpcf();
}
return $form->renderElements( $elements );
}
/**
* Validates form elements (simple).
*
* @staticvar string $form
*
* @deprecated Please avoid using Enlimbo forms for new code. Consider using Twig templates instead.
*/
function wpcf_form_simple_validate( &$elements ) {
static $form = null;
require_once WPCF_EMBEDDED_ABSPATH . '/classes/forms.php';
if ( is_null( $form ) ) {
$form = new Enlimbo_Forms_Wpcf();
}
$form->validate( $elements );
return $form;
}
/**
* Stores JS validation rules.
*
* @staticvar array $validation
*
*
* @return array
* @deprecated Please avoid using Enlimbo forms for new code. Consider using Twig templates instead.
*/
function wpcf_form_add_js_validation( $element ) {
static $validation = array();
if ( $element == 'get' ) {
$temp = $validation;
$validation = array();
return $temp;
}
$validation[ $element['#id'] ] = $element;
}
/**
* Renders JS validation rules.
*
*
* @return string
* @deprecated Please avoid using Enlimbo forms for new code. Consider using Twig templates instead.
*/
function wpcf_form_render_js_validation(
$selector = '.wpcf-form-validate',
$echo = true
) {
$output = WPCF_Validation::renderJsonData( $selector );
if ( $echo ) {
echo $output;
}
return $output;
}
/**
* wpcf_custom_fields_to_be_copied
*
* Hook the copy custom fields from WPML and remove any of the fields
* that wpcf will copy.
*/
function wpcf_custom_fields_to_be_copied( $copied_fields, $original_post_id ) {
// see if this is one of our fields.
$groups = wpcf_admin_post_get_post_groups_fields( get_post( $original_post_id ) );
foreach ( $copied_fields as $id => $copied_field ) {
foreach ( $groups as $group ) {
if ( isset( $group['fields'] ) && is_array( $group['fields'] ) ) {
foreach ( $group['fields'] as $field ) {
if ( ! is_array( $field ) || ! isset( $field['slug'] ) ) {
// repeatable field group
continue;
}
if ( $copied_field == wpcf_types_get_meta_prefix( $field ) . $field['slug'] ) {
unset( $copied_fields[ $id ] );
}
}
}
}
}
return $copied_fields;
}
/**
* Holds validation messages.
*
* @param type $method
*
* @return type
*/
function wpcf_admin_validation_messages( $method = false, $sprintf = '' ) {
$messages = array(
'required' => __( 'This field is required.', 'wpcf' ),
'email' => __( 'Please enter a valid email address.', 'wpcf' ),
'url' => __( 'Please enter a valid URL address.', 'wpcf' ),
'date' => __( 'Please enter a valid date.', 'wpcf' ),
'digits' => __( 'Please enter numeric data.', 'wpcf' ),
'number' => __( 'Please enter numeric data.', 'wpcf' ),
'alphanumeric' => __( 'Letters, numbers, spaces or underscores only please.', 'wpcf' ),
'nospecialchars' => __( 'Letters, numbers, spaces, underscores and dashes only please.', 'wpcf' ),
'rewriteslug' => __( 'Letters, numbers, slashes, underscores and dashes only please.', 'wpcf' ),
'negativeTimestamp' => __( 'Please enter a date after 1 January 1970.', 'wpcf' ),
'maxlength' => sprintf( __( 'Maximum of %s characters exceeded.', 'wpcf' ), strval( $sprintf ) ),
'minlength' => sprintf( __( 'Minimum of %s characters has not been reached.', 'wpcf' ), strval( $sprintf ) ),
/**
* see
* https://support.skype.com/en/faq/FA10858/what-is-a-skype-name-and-how-do-i-find-mine
*/
'skype' => __( 'Letters, numbers, dashes, underscores, commas and periods only please.', 'wpcf' ),
);
if ( $method ) {
return isset( $messages[ $method ] ) ? $messages[ $method ] : '';
}
return $messages;
}
/**
* Sanitize admin notice.
*
* @param string $message
*
* @return string
*/
function wpcf_admin_message_sanitize( $message ) {
$allowed_tags = array(
'a' => array(
'href' => array(),
'title' => array(),
),
'br' => array(),
'b' => array(),
'div' => array(),
'em' => array(),
'i' => array(),
'p' => array(),
'strong' => array(),
);
$message = wp_kses( $message, $allowed_tags );
return stripslashes( html_entity_decode( $message, ENT_QUOTES ) );
}
/**
* Adds admin notice.
*
* @param string $message
* @param string $class
* @param string $mode 'action'|'echo'
*/
function wpcf_admin_message( $message, $class = 'updated', $mode = 'action' ) {
if ( 'action' == $mode ) {
add_action( 'admin_notices', function () use ( $class, $message ) {
$message = htmlentities( $message, ENT_QUOTES );
$screen = get_current_screen();
if ( ! $screen->is_network ) {
echo '<div class="message js-toolset-fadable '
. $class
. '"><p>'
. wpcf_admin_message_sanitize( $message )
. '</p></div>';
}
} );
} elseif ( 'echo' == $mode ) {
printf(
'<div class="message %s is-dismissible"><p>%s</p> <button type="button" class="notice-dismiss">
<span class="screen-reader-text">
' . __( 'Dismiss this notice.' ) . '
</span>
</button></div>',
$class,
wpcf_admin_message_sanitize( $message )
);
}
}
/**
* Shows stored messages.
*/
function wpcf_show_admin_messages( $mode = 'action' ) {
$messages = get_option( 'wpcf-messages', array() );
$messages_for_user = isset( $messages[ get_current_user_id() ] ) ? $messages[ get_current_user_id() ] : array();
$dismissed = get_option( 'wpcf_dismissed_messages', array() );
if ( ! empty( $messages_for_user ) && is_array( $messages_for_user ) ) {
foreach ( $messages_for_user as $message_id => $message ) {
if ( ! in_array( $message['keep_id'], $dismissed ) ) {
wpcf_admin_message( $message['message'], $message['class'], $mode );
}
if ( empty( $message['keep_id'] )
|| in_array( $message['keep_id'], $dismissed )
) {
unset( $messages[ get_current_user_id() ][ $message_id ] );
}
}
}
update_option( 'wpcf-messages', $messages );
}
/**
* Stores admin notices if redirection is performed.
*
* @param string $message
* @param string $class
*/
function wpcf_admin_message_store( $message, $class = 'updated', $keep_id = false ) {
/**
* Allow to store or note
*
* Filter allow to turn off storing messages in Types
*
* @param boolean $var default value is true to show messages
*
* @since 1.6.6
*
*/
if ( ! apply_filters( 'wpcf_admin_message_store', true ) ) {
return;
}
$messages = get_option( 'wpcf-messages', array() );
$messages[ get_current_user_id() ][ md5( $message ) ] = array(
'message' => $message,
'class' => $class,
'keep_id' => $keep_id ? $keep_id : false,
);
update_option( 'wpcf-messages', $messages );
}
/**
* Admin notice with dismiss button.
*
* @param type $ID
* @param string $message
* @param type $store
*
* @return boolean
*/
function wpcf_admin_message_dismiss( $ID, $message, $store = true ) {
$dismissed = get_option( 'wpcf_dismissed_messages', array() );
if ( in_array( $ID, $dismissed ) ) {
return false;
}
$message = $message
. '<div style="float:right; margin:-15px 0 0 15px;"><a onclick="jQuery(this).parent().parent().fadeOut();jQuery.get(\''
. admin_url( 'admin-ajax.php?action=wpcf_ajax&wpcf_action=dismiss_message&id='
. $ID . '&_wpnonce=' . wp_create_nonce( 'dismiss_message' ) )
. '\');return false;"'
. 'class="button-secondary" href="javascript:void(0);">'
. __( 'Dismiss', 'wpcf' )
. '</a></div>';
if ( $store ) {
wpcf_admin_message_store( $message, 'updated', $ID );
} else {
wpcf_admin_message( $message );
}
}
/**
* Checks if message is dismissed.
*
* @param type $message_id
*
* @return boolean
*/
function wpcf_message_is_dismissed( $message_id ) {
return in_array( $message_id,
(array) get_option( '_wpcf_dismissed_messages', array() ) );
}
/**
* Adds dismissed message to record.
*
* @param $ID
*/
function wpcf_admin_message_set_dismissed( $ID ) {
$messages = get_option( 'wpcf_dismissed_messages', array() );
if ( ! in_array( $ID, $messages ) ) {
$messages[] = $ID;
update_option( 'wpcf_dismissed_messages', $messages, true );
}
}
/**
* Removes dismissed message from record.
*
* @param $ID
*/
function wpcf_admin_message_restore_dismissed( $ID ) {
$messages = get_option( 'wpcf_dismissed_messages', array() );
$key = array_search( $ID, $messages );
if ( $key !== false ) {
unset( $messages[ $key ] );
update_option( 'wpcf_dismissed_messages', $messages, true );
}
}
/**
* Saves cookie.
*
*/
function wpcf_cookies_add( $data ) {
if ( isset( $_COOKIE['wpcf'] ) ) {
$data = array_merge( (array) $_COOKIE['wpcf'], $data );
}
setcookie( 'wpcf', $data, time() + $lifetime, COOKIEPATH, COOKIE_DOMAIN );
}
/**
* Renders page head.
*
* @see WPCF_Template::ajax_header()
*/
function wpcf_admin_ajax_head( $title = '' ) {
/*
* Since Types 1.2 and WP 3.5
* AJAX head is rendered differently
*/
global $wp_version;
if ( version_compare( $wp_version, '3.4', '>' ) ) {
// WP Header
include WPCF_EMBEDDED_ABSPATH . '/includes/ajax/admin-header.php';
return true;
}
global $pagenow;
$hook_suffix = $pagenow;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action( 'admin_xml_ns' ); ?> <?php language_attributes(); ?>>
<head>
<meta http-equiv="Content-Type"
content="<?php bloginfo( 'html_type' ); ?>; charset=<?php echo get_option( 'blog_charset' ); ?>" />
<title><?php echo $title; ?></title>
<?php
if ( wpcf_compare_wp_version( '3.2.1', '<=' ) ) {
wp_admin_css( 'global' );
}
wp_admin_css();
wp_admin_css( 'colors' );
wp_admin_css( 'ie' );
// do_action('admin_enqueue_scripts', $hook_suffix);
do_action( "admin_print_styles-$hook_suffix" );
do_action( 'admin_print_styles' );
// do_action("admin_print_scripts-$hook_suffix");
do_action( 'admin_print_scripts' );
// do_action("admin_head-$hook_suffix");
// do_action('admin_head');
do_action( 'admin_head_wpcf_ajax' );
?>
<style type="text/css">
html {
height: auto;
}
</style>
<script type="text/javascript">
// <![CDATA[
jQuery( function() {
// Position the help link in the title bar.
var title = jQuery( '#TB_closeAjaxWindow', window.parent.document );
if ( title.length != 0 ) {
title.after( jQuery( '.wpcf-help-link' ) );
}
} );
// ]]>
</script>
<link rel="stylesheet" href="<?php echo WPCF_EMBEDDED_RES_RELPATH . '/css/basic.css'; ?>" type="text/css"
media="all" />
</head>
<body style="padding: 20px;">
<?php
}
/**
* Renders page footer
*
* @see WPCF_Template::ajax_footer()
*/
function wpcf_admin_ajax_footer() {
/*
* Since Types 1.2 and WP 3.5
* AJAX footer is rendered differently
*/
global $wp_version, $wpcf;
if ( version_compare( $wp_version, '3.4', '>' ) ) {
// WP Footer
do_action( 'admin_footer_wpcf_ajax' );
include WPCF_EMBEDDED_ABSPATH . '/includes/ajax/admin-footer.php';
return true;
}
global $pagenow;
do_action( 'admin_footer_wpcf_ajax' );
// do_action('admin_footer', '');
// do_action('admin_print_footer_scripts');
// do_action("admin_footer-" . $pagenow);
?>
</body>
</html>
<?php
}
/**
* Renders JS settings.
*
*/
function wpcf_admin_render_js_settings() {
$settings = wpcf_admin_add_js_settings( 'get' );
if ( empty( $settings ) ) {
return '';
}
?>
<script type="text/javascript">
//<![CDATA[
<?php
foreach ( $settings as $id => $setting ) {
if ( is_string( $setting ) ) {
$setting = trim( $setting, '\'' );
$setting = "'" . esc_js( $setting ) . "'";
} else {
$setting = intval( $setting );
}
echo 'var ' . $id . ' = ' . $setting . ';' . "\r\n";
}
?>
//]]>
</script>
<?php
}
/**
* wpcf_get_fields
*
* returns the fields handled by types
*
*/
function wpcf_get_post_meta_field_names() {
require_once WPCF_EMBEDDED_INC_ABSPATH . '/fields.php';
$fields = wpcf_admin_fields_get_fields();
$field_names = array();
foreach ( $fields as $field ) {
$field_names[] = wpcf_types_get_meta_prefix( $field ) . $field['slug'];
}
return $field_names;
}
/**
* Forces 'Insert into post' link when called from our WYSIWYG.
*
* @param array $args
*
* @return array
*/
function wpcf_get_media_item_args_filter( $args ) {
if ( strpos( $_SERVER['SCRIPT_NAME'], '/media-upload.php' ) === false ) {
return $args;
}
if ( ! empty( $_COOKIE['wpcfActiveEditor'] )
&& strpos( $_COOKIE['wpcfActiveEditor'], 'wpcf-wysiwyg-' ) !== false ) {
$args['send'] = true;
}
return $args;
}
/**
* Gets post.
*
* @return WP_Post|array
*/
function wpcf_admin_get_edited_post() {
// Global $post_ID holds post IDs for new posts too.
global $post_ID;
if ( ! empty( $post_ID ) ) {
$post_id = $post_ID;
} elseif ( isset( $_GET['post'] ) ) {
$post_id = (int) $_GET['post'];
} elseif ( isset( $_POST['post_ID'] ) ) {
$post_id = (int) $_POST['post_ID'];
} else {
$post_id = 0;
}
if ( $post_id ) {
if ( $post = get_post( $post_id ) ) {
return $post;
}
}
// check for repeatable field gropu item
if ( $post = wpcf_admin_get_repeatable_group_item_by_request() ) {
return $post;
}
// nothing found
return array();
}
/**
* When requesting a repeatable field group we put on the item loop each item
* to $_REQUEST['repeatable_group_item_post'] to make it work with Enlimbo
*
* @return WP_Post|false
*
* @since m2m
*/
function wpcf_admin_get_repeatable_group_item_by_request() {
if ( isset( $_REQUEST['repeatable_group_item_post'] )
&& $_REQUEST['repeatable_group_item_post']
instanceof
WP_Post ) {
return $_REQUEST['repeatable_group_item_post'];
}
return false;
}
/**
* wpcf_admin_get_current_edited_post
*
* Wrapper for wpcf_admin_get_edited_post returning nul instead of an empty array when the current post can not be
* guessed.
*
* Used on the Views integration at /library/tolset/types/embedded/classes/wpviews.php
* when calculating the current post so we can display the right fields in the Fields and Views dialog.
*
* @since 2.2
*/
add_filter( 'wpcf_filter_wpcf_admin_get_current_edited_post', 'wpcf_admin_get_current_edited_post' );
function wpcf_admin_get_current_edited_post( $current_post = null ) {
$current_post = wpcf_admin_get_edited_post();
if ( empty( $current_post ) ) {
return null;
}
return $current_post;
}
/**
* Gets post type.
*
* @param WP_Post $post
*
* @return string
*/
function wpcf_admin_get_edited_post_type( $post = null ) {
if ( ! empty( $post->ID ) ) {
return get_post_type( $post );
}
if ( ! isset( $_GET['post_type'] ) ) {
return 'post';
}
if ( in_array( $_GET['post_type'], get_post_types( array( 'show_ui' => true ) ), true ) ) {
return sanitize_text_field( $_GET['post_type'] );
}
return 'post';
}